UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

66 lines (61 loc) 2.1 kB
import { BRANDING_LOGO_URL, BRANDING_NAME, ORG_NAME } from '@/const/branding'; import { DEFAULT_LANG } from '@/const/locale'; import { OFFICIAL_URL, OG_URL } from '@/const/url'; import { isCustomBranding, isCustomORG } from '@/const/version'; import { appEnv } from '@/envs/app'; import { translation } from '@/server/translation'; import { DynamicLayoutProps } from '@/types/next'; import { RouteVariants } from '@/utils/server/routeVariants'; const BASE_PATH = appEnv.NEXT_PUBLIC_BASE_PATH; // if there is a base path, then we don't need the manifest const noManifest = !!BASE_PATH; export const generateMetadata = async (props: DynamicLayoutProps) => { const locale = await RouteVariants.getLocale(props); const { t } = await translation('metadata', locale); return { alternates: { canonical: OFFICIAL_URL, }, appleWebApp: { statusBarStyle: 'black-translucent', title: BRANDING_NAME, }, description: t('chat.description', { appName: BRANDING_NAME }), icons: isCustomBranding ? BRANDING_LOGO_URL : { apple: '/apple-touch-icon.png?v=1', icon: '/favicon.ico?v=1', shortcut: '/favicon-32x32.ico?v=1', }, manifest: noManifest ? undefined : '/manifest.json', metadataBase: new URL(OFFICIAL_URL), openGraph: { description: t('chat.description', { appName: BRANDING_NAME }), images: [ { alt: t('chat.title', { appName: BRANDING_NAME }), height: 640, url: OG_URL, width: 1200, }, ], locale: DEFAULT_LANG, siteName: BRANDING_NAME, title: BRANDING_NAME, type: 'website', url: OFFICIAL_URL, }, title: { default: t('chat.title', { appName: BRANDING_NAME }), template: `%s · ${BRANDING_NAME}`, }, twitter: { card: 'summary_large_image', description: t('chat.description', { appName: BRANDING_NAME }), images: [OG_URL], site: isCustomORG ? `@${ORG_NAME}` : '@lobehub', title: t('chat.title', { appName: BRANDING_NAME }), }, }; };